<?xml version="1.0"?>
<doc>
    <assembly>
        <name>WindowsRecipes.TaskbarSingleInstance</name>
    </assembly>
    <members>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup">
            <summary>
            Used to pass initialization data to an initialized instance of the <see cref="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager"/>.
            </summary>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.#ctor(System.String)">
            <summary>
            Constructs a new instance of the <see cref="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup"/> class.
            </summary>
            <param name="applicationId">The application ID which is used to identify the application as a single instance.</param>
        </member>
        <member name="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.ApplicationId">
            <summary>
            The application ID which is used to identify the application as a single instance.
            </summary>
        </member>
        <member name="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.ArgumentsHandler">
            <summary>
            The handler invoked when command line arguments are recieved from a remote instance.
            </summary>
            <remarks>
            The hadnler is invoked using the invoker configure via <see cref="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.ArgumentsHandlerInvoker"/>.
            </remarks>
        </member>
        <member name="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.TerminationOption">
            <summary>
            The action to perform when trying to initalize a <see cref="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager"/>
            which is not the first application instance.
            </summary>
            <remarks>
            The default value is <see cref="F:WindowsRecipes.TaskbarSingleInstance.TerminationOption.Exit"/>. When <see cref="F:WindowsRecipes.TaskbarSingleInstance.TerminationOption.Exit"/> is set,
            the value configured in <see cref="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.ExitCode"/> is used as the exit code.
            </remarks>
        </member>
        <member name="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.ExitCode">
            <summary>
            The exit code to be used if this is not the first application instance, and <see cref="F:WindowsRecipes.TaskbarSingleInstance.TerminationOption.Exit"/>
            is specified for <see cref="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.TerminationOption"/>.
            </summary>
        </member>
        <member name="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.ArgumentsProvider">
            <summary>
            A custom provider for the current process' command line arguments.
            </summary>
            <remarks>
            By default <see cref="M:System.Environment.GetCommandLineArgs"/> is used.
            </remarks>
        </member>
        <member name="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.Factory">
            <summary>
            A custom provider for the command line arguments delivery strategy.
            </summary>
            <remarks>
            By default <see cref="T:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategyFactory"/> is used.
            </remarks>
        </member>
        <member name="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.ArgumentsHandlerInvoker">
            <summary>
            A custom arguments handler invoker.
            </summary>
            <remarks>
            This property determines how the host application gets notified of incoming command line arguments from other instances.
            By default <see cref="T:WindowsRecipes.TaskbarSingleInstance.ThreadPoolInvoker"/> is used. For specific application types (e.g. WinForms &amp; WPF), use appropriate custom invokers.
            </remarks>
        </member>
        <member name="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.InstanceNotificationOption">
            <summary>
            Used to set the behavior of the <see cref="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager"/> when the first application instance is run as an admin.
            </summary>
            <remarks>
            If the first application instance is not run as an administrator, then setting this setting has no effect.
            The default value is <see cref="F:WindowsRecipes.TaskbarSingleInstance.InstanceNotificationOption.NotifyAnyway"/>.
            </remarks>
        </member>
        <member name="P:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup.DelivaryFailureNotification">
            <summary>
            Specify a handler to be called when delivery of command line arguments to the first instance has failed for some reason.
            </summary>
            <remarks>
            A common reason for failure might be that the <see cref="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager"/> is run with 
            <see cref="F:WindowsRecipes.TaskbarSingleInstance.InstanceNotificationOption.NotifyOnlyIfAdmin"/> and this instance doesn't have administrative priviliges.
            </remarks>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager">
            <summary>
            The main class used for setting up a single instance application.
            </summary>
            <remarks>
            Use the <see cref="M:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager.Initialize(WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup)"/> method to create and initialize a single instance manager.
            Note that normally only one instance of this class should be created.
            </remarks>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager.Initialize(WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup)">
            <summary>
            Constructs and initializes a new instance of the single instance manager.
            </summary>
            <param name="setup">Setup information for the single instance manager.</param>
            <returns>An initialized single instance manager.</returns>
            <remarks>
            Use this method to initialize a single instance manager with the given setup information.
            Note that normally only one call to this method should be performed, at the beggining of the application execution.
            </remarks>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager.Dispose">
            <summary>
            Disposes the instance, and releases all held resources.
            </summary>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager.TryEnsureFirstInstance">
            <summary>
            Used to check if this is the first application instance, and act accordingly.
            </summary>
            <returns>true if this is the first application instance, false otherwise.</returns>
            <remarks>
            If this is the first application instance, the argument delivery strategy is initialized to listen for incoming argument notifications.
            Otherwise, the argument delivery strategy is used to notify the already running application instance.
            </remarks>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager.IsFirstApplicationInstance">
            <summary>
            Checks if an application instance was already created, and marks this as the first instance if it is not.
            </summary>
            <returns>true if this is the first application instance, false otherwise.</returns>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager.NotifyArgumentsReceived(System.String[],System.Boolean)">
            <summary>
            Notifies the registered handler of the arguments recieved.
            </summary>
            <param name="args">The command line arguments recieved.</param>
            <param name="remoteIsAdmin">Indicates whether the remote party is an administrator.</param>
            <remarks>
            Note that notification is performed according to the <see cref="T:WindowsRecipes.TaskbarSingleInstance.InstanceNotificationOption"/> given in the manager setup. 
            In addition, note that the registered handler is invoked using the handler invoker supplied upon <see cref="M:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager.Initialize(WindowsRecipes.TaskbarSingleInstance.SingleInstanceManagerSetup)">initializtion</see>.
            </remarks>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategyFactory">
            <summary>
            A factory class for creating an <see cref="T:WindowsRecipes.TaskbarSingleInstance.ArgumentsDeliveryStrategy"/> of type <see cref="T:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy"/>.
            </summary>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.DeliveryStrategyFactory">
            <summary>
            The base class for a command line arguments delivery strategy factory.
            </summary>
            <remarks>
            Derive this class to enable the <see cref="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager"/> to use a custom delivery strategy.
            </remarks>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.DeliveryStrategyFactory.CreateStrategy">
            <summary>
            Override this method to return a custom <see cref="T:WindowsRecipes.TaskbarSingleInstance.ArgumentsDeliveryStrategy"/>.
            </summary>
            <returns>A custom <see cref="T:WindowsRecipes.TaskbarSingleInstance.ArgumentsDeliveryStrategy"/>.</returns>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategyFactory.CreateStrategy">
            <summary>
            Constructs and returnes a new instance of <see cref="T:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy"/>.
            </summary>
            <returns>A new instance of <see cref="T:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy"/>.</returns>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy">
            <summary>
            An implementation of an <see cref="T:WindowsRecipes.TaskbarSingleInstance.ArgumentsDeliveryStrategy"/> using .NET IPC remoting as the communication mechanism.
            </summary>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.ArgumentsDeliveryStrategy">
            <summary>
            The base class for implementing a strategy to recieve and deliver command line arguments from/to other application instances.
            </summary>
            <remarks>
            Inherit this class to implement your own command line arguments notification strategy. 
            When this is the first application instance, the strategy is used to recieve notifications of command line arguments from new application instances.
            When this is not the first application instance, the strategy is used to deliver the command line arguments to the first application instance.
            </remarks>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.ArgumentsDeliveryStrategy.OnInitializeFirstInstance(System.String)">
            <summary>
            Override this method to initalize a listener to incoming command line arguments, as the first application instance.
            </summary>
            <param name="applicationId">The application ID which identifies the application as a single instance.</param>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.ArgumentsDeliveryStrategy.OnDeliverArgumentsToFirstInstance(System.String,System.String[])">
            <summary>
            Override this method to deliver the command line arguments to the first application instance.
            </summary>
            <param name="applicationId">The application ID which identifies the application as a single instance.</param>
            <param name="args">The command line arguments to deliver.</param>
            <remarks>
            If the delivery fails, an appropriate excption should be thrown.
            </remarks>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.ArgumentsDeliveryStrategy.OnCleanup">
            <summary>
            Override this method to cleanup unneeded resources upon disposal.
            </summary>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.ArgumentsDeliveryStrategy.NotifyArgumentsReceived(System.String[],System.Boolean)">
            <summary>
            Derived classes should call this method to notify the application instance of incoming command line arguments.
            </summary>
            <param name="args">The command line arguments recieved.</param>
            <param name="remoteIsAdmin">true if the remote party has admin priviliges, false otherwise.</param>
        </member>
        <member name="F:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy.RemoteServiceName">
            <summary>
            Remote service name.
            </summary>
        </member>
        <member name="F:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy.channel">
            <summary>
            IPC channel for communications.
            </summary>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy.OnInitializeFirstInstance(System.String)">
            <summary>
            Initalize a listener for incoming command line arguments, as the first application instance, using a remoting IPC service.
            </summary>
            <param name="applicationId">The application ID which identifies the application as a single instance.</param>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy.OnDeliverArgumentsToFirstInstance(System.String,System.String[])">
            <summary>
            Delivers the command line arguments to the first application instance, via a .NET remoting call to a remote service.
            </summary>
            <param name="applicationId">The application ID which identifies the application as a single instance.</param>
            <param name="args">The command line arguments to deliver.</param>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy.OnCleanup">
            <summary>
            Cleanup unneeded resources upon disposal.
            </summary>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.Remoting.RemotingStrategy.IPCRemoteService.InitializeLifetimeService">
            <summary>
            Remoting Object's ease expires after every 5 minutes by default. We need to override the InitializeLifetimeService class
            to ensure that lease never expires.
            </summary>
            <returns>Always null.</returns>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.ApplicationInstanceAlreadyExistsException">
            <summary>
            The exception which is thrown when trying to initialize a second application instance, and the <see cref="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager"/>
            is set to <see cref="F:WindowsRecipes.TaskbarSingleInstance.TerminationOption.Throw"/>.
            </summary>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.InstanceNotificationOption">
            <summary>
            Used to set the behavior of the <see cref="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager"/> when the first application instance is run as an admin.
            </summary>
            <remarks>
            If the first application instance is not run as an administrator, then setting this setting has no effect.
            </remarks>
        </member>
        <member name="F:WindowsRecipes.TaskbarSingleInstance.InstanceNotificationOption.NotifyAnyway">
            <summary>
            Always allow the first application instance to be notified of incoming arguments, regardless of whether these
            arguments originate from an admin or non-admin instance.
            </summary>
        </member>
        <member name="F:WindowsRecipes.TaskbarSingleInstance.InstanceNotificationOption.NotifyOnlyIfAdmin">
            <summary>
            Only allows the first (admin) application instance to be notified of incoming arguments, if these arguments
            originate from an admin instance.
            </summary>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.IArgumentsHandlerInvoker">
            <summary>
            Implement this interface to provide a custom arguments handler invoker.
            </summary>
            <remarks>
            A default <see cref="T:WindowsRecipes.TaskbarSingleInstance.ThreadPoolInvoker"/> is provided out-of-the-box, for invoking handler on thread-pool threads.
            In addition, custom invokers for WPF &amp; WinForms are available.
            
            Implement this interface to provide custom handler invocation.
            </remarks>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.IArgumentsHandlerInvoker.Invoke(System.Action{System.String[]},System.String[])">
            <summary>
            The method called to invoke the handler.
            </summary>
            <param name="handlerToInvoke">The handler to invoke.</param>
            <param name="args">The command line arguments to deliver.</param>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.TerminationOption">
            <summary>
            Represents the action to perform when trying to initalize a <see cref="T:WindowsRecipes.TaskbarSingleInstance.SingleInstanceManager"/>
            which is not the first application instance.
            </summary>
        </member>
        <member name="F:WindowsRecipes.TaskbarSingleInstance.TerminationOption.Exit">
            <summary>
            Exit the application using <see cref="M:System.Environment.Exit(System.Int32)"/>.
            </summary>
        </member>
        <member name="F:WindowsRecipes.TaskbarSingleInstance.TerminationOption.Throw">
            <summary>
            Throw an <see cref="T:WindowsRecipes.TaskbarSingleInstance.ApplicationInstanceAlreadyExistsException"/>.
            </summary>
        </member>
        <member name="T:WindowsRecipes.TaskbarSingleInstance.ThreadPoolInvoker">
            <summary>
            A general-purpose <see cref="T:WindowsRecipes.TaskbarSingleInstance.IArgumentsHandlerInvoker"/> which invokes argument handlers on Thread-Pool threads.
            </summary>
        </member>
        <member name="M:WindowsRecipes.TaskbarSingleInstance.ThreadPoolInvoker.Invoke(System.Action{System.String[]},System.String[])">
            <summary>
            Invokes the given handler on a thread pool therad.
            </summary>
            <param name="handlerToInvoke">The handler to invoke.</param>
            <param name="args">The command line arguments to deliver.</param>
        </member>
    </members>
</doc>
